#pragma once 

#ifndef CELL_H
#define CELL_H

#include <vector>
#include "Eigen/Geometry"
#include "Wall.h"

using namespace std;
using namespace Eigen;

class Cell 
{
	Wall floor;
	Vector3f position;
	float size;
	char code;
public:
	const Vector3f* getPosition(void)const;
	void setPosition(const Vector3f& Position);
	void setPosition(const float x, const float y, const float z);

	vector<Wall> walls;
	Cell();
	Cell(std::vector<Wall> _walls, Wall _floor, float positionX, float positionY, float positionZ, float _size, char _code);
	Cell(std::vector<Wall> _walls, Wall _floor, Vector3f& Position, float _size, char _code);
	void Draw();
	void AddWall(Wall);
	void Cell::Clear();
};

inline const Vector3f* Cell::getPosition(void)const 
{
	return &position;
}

inline void Cell::setPosition(const Vector3f& Position)
{
	position = Position;
}

inline void Cell::setPosition(const float x, const float y, const float z)
{
	position[0] = x;
	position[1] = y;
	position[2] = z;
}

#endif